//sort
#include<bits/stdc++.h>
using namespace std;
struct node{
	int num;
	int val;
}a[8010],b[8010];
bool chg[8010];
int cnum;
int n,q,opt,loc,v;;
bool cmp(node x,node y)
{
	if(x.val!=y.val)
		return x.val<y.val;
	else
		return x.num<y.num;
}
void Msort()
{
	if(cnum==0)
	return;
	int l=0,r=cnum;
	for(int i=1;i<=n;i++)
	{
		if(chg[i])
		{
			b[++l]=a[i];
		}
		else
		{
			b[++r]=a[i];
		}
	}
	sort(b+1,b+1+cnum,cmp);
	l=0,r=cnum;
	for(int i=1;i<=n;i++)
	{
		if(l==cnum)
		{
			a[i]=b[++r];
			continue;
		}
		if(r==n)
		{
			a[i]=b[++l];
			continue;
		}
		if(b[l+1].val<b[r+1].val)
		{
			a[i]=b[++l];
			continue;
		}
		if(b[l+1].val>b[r+1].val)
		{
			a[i]=b[++r];
			continue;
		}
		if(b[l+1].val==b[r+1].val)
		{
			if(b[l+1].num<b[r+1].num)
			{
				a[i]=b[++l];
				continue;
			}
			if(b[l+1].num>b[r+1].num)
			{
				a[i]=b[++r];
				continue;
			}
		}
	}
}
int main()
{
	freopen("sort.in","r",stdin);
	freopen("sort.out","w",stdout);
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i].val);
		a[i].num=i;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=q;i++)
	{
		scanf("%d",&opt);
		if(opt==1)
		{
			scanf("%d%d",&loc,&v);
			for(int j=1;j<=n;j++)
			{
				if(a[j].num==loc)
				{
					if(chg[j]==0)
					cnum++;
					a[j].val=v;
					chg[j]=1;
					break;
				}
			}
		}
		else
		{
			scanf("%d",&loc);
			Msort();
			cnum=0;
			memset(chg,0,sizeof(chg));
			for(int j=1;j<=n;j++)
			{
				if(a[j].num==loc)
				{
					printf("%d\n",j);
					break;
				}
			}
		}
	}
	return 0;
}
